]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
panel: Add `PanelMenu.Button` menu when `menu-set` is emitted
authorAndy Holmes <andrew.g.r.holmes@gmail.com>
Mon, 5 Sep 2022 00:21:29 +0000 (17:21 -0700)
committerMarge Bot <marge-bot@gnome.org>
Sat, 17 Sep 2022 17:56:21 +0000 (17:56 +0000)
When a `PanelMenu.Button` is added to the `statusArea`, its menu is
added to the `PopupMenuManager` if it has one at the time. If a menu is
added later or a new one set, the new menu is never added.

Move the call to `PopupMenuManager.addMenu()` from `_addToPanelBox()`
to `_onMenuSet()`, which is called when the `PanelMenu.Button` is added
and whenever it emits the `menu-set` signal.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2470>

js/ui/panel.js

index 24248865ba51bc43c379b8f4db636bbb1f94dfe9..94dffda7328e2f86992547b6a12b34105fe47968 100644 (file)
@@ -707,8 +707,6 @@ class Panel extends St.Widget {
 
 
         box.insert_child_at_index(container, position);
-        if (indicator.menu)
-            this.menuManager.addMenu(indicator.menu);
         this.statusArea[role] = indicator;
         let destroyId = indicator.connect('destroy', emitter => {
             delete this.statusArea[role];
@@ -741,6 +739,8 @@ class Panel extends St.Widget {
         if (!indicator.menu || indicator.menu._openChangedId)
             return;
 
+        this.menuManager.addMenu(indicator.menu);
+
         indicator.menu._openChangedId = indicator.menu.connect('open-state-changed',
             (menu, isOpen) => {
                 let boxAlignment;